package com.base.system.service.impl;

import com.base.common.core.service.DictService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * 字典 业务层处理
 *
 * @author Lion Li
 */
@RequiredArgsConstructor
@Service
public class SysDictTypeServiceImpl implements DictService {




    /**
     * 根据字典类型和字典值获取字典标签
     *
     * @param dictType  字典类型
     * @param dictValue 字典值
     * @param separator 分隔符
     * @return 字典标签
     */
    @SuppressWarnings("unchecked cast")
    @Override
    public String getDictLabel(String dictType, String dictValue, String separator) {
        // 优先从本地缓存获取
//        List<SysDictData> datas = (List<SysDictData>) SaHolder.getStorage().get(CacheConstants.SYS_DICT_KEY + dictType);
//        if (ObjectUtil.isNull(datas)) {
//            datas = selectDictDataByType(dictType);
//            SaHolder.getStorage().set(CacheConstants.SYS_DICT_KEY + dictType, datas);
//        }
//
//        Map<String, String> map = StreamUtils.toMap(datas, SysDictData::getDictValue, SysDictData::getDictLabel);
//        if (StringUtils.containsAny(dictValue, separator)) {
//            return Arrays.stream(dictValue.split(separator))
//                .map(v -> map.getOrDefault(v, StringUtils.EMPTY))
//                .collect(Collectors.joining(separator));
//        } else {
//            return map.getOrDefault(dictValue, StringUtils.EMPTY);
//        }

        return  "-";
    }

    /**
     * 根据字典类型和字典标签获取字典值
     *
     * @param dictType  字典类型
     * @param dictLabel 字典标签
     * @param separator 分隔符
     * @return 字典值
     */
    @SuppressWarnings("unchecked cast")
    @Override
    public String getDictValue(String dictType, String dictLabel, String separator) {
        // 优先从本地缓存获取
//        List<SysDictData> datas = (List<SysDictData>) SaHolder.getStorage().get(CacheConstants.SYS_DICT_KEY + dictType);
//        if (ObjectUtil.isNull(datas)) {
//            datas = selectDictDataByType(dictType);
//            SaHolder.getStorage().set(CacheConstants.SYS_DICT_KEY + dictType, datas);
//        }
//
//        Map<String, String> map = StreamUtils.toMap(datas, SysDictData::getDictLabel, SysDictData::getDictValue);
//        if (StringUtils.containsAny(dictLabel, separator)) {
//            return Arrays.stream(dictLabel.split(separator))
//                .map(l -> map.getOrDefault(l, StringUtils.EMPTY))
//                .collect(Collectors.joining(separator));
//        } else {
//            return map.getOrDefault(dictLabel, StringUtils.EMPTY);
//        }
        return  "-";
    }

    @Override
    public Map<String, String> getAllDictByDictType(String dictType) {
//        List<SysDictData> list = selectDictDataByType(dictType);
//        return StreamUtils.toMap(list, SysDictData::getDictValue, SysDictData::getDictLabel);
        return  new HashMap<>();
    }
}
